Electronic devices are ubiquitous in society, including business devices such as desktops, laptops, portables, servers, etc., as well as consumer devices such as music players, cell phones, cameras, digital video recorders, televisions, set-top boxes, game players, etc., as well as system components such as disk drives, solid state drives, printers, monitors, etc. An electronic device typically comprises a microprocessor executing code segments of a control program for controlling various operations of the electronic device. The control program is typically stored in a non-volatile memory, such as in a non-volatile semiconductor memory (e.g., a flash memory), or on a non-volatile disk (e.g., an optical or magnetic disk drive).
From time to time it may be desirable to update an electronic device with a new version of the control program. The control program may be updated by downloading a new version from a network (e.g., Internet, cellular network, cable network, etc.), or by the electronic device reading the new version from a removable storage medium (e.g., optical disk, flash card, USB drive, etc.). Typically it is desirable to update the control program in a fail safe manner to avoid rendering the electronic device inoperable if the program update is interrupted (e.g., due to a power failure).